package com.Frame;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 图形界面
 */
public class MainFrame {
    public static void main(String[] args) {
        Frame f = new Frame("EasyCounter");
        f.setBounds(1000, 200, 450, 100);
        //选择布局方式
        f.setLayout(new FlowLayout());
        f.setResizable(false); // 设置为大小不可变的
        //创建一个按钮，用于提示，其中op只能为（+-*/）
        Button Tips = new Button("a                                op         b                                =                                            ");
        //创建文本框
        TextField tf1 = new TextField(10);//用于输入第一个数值
        TextField op = new TextField(3);//用于输入操作符+-*/
        TextField tf2 = new TextField(10);//用于输入第二个数值
        //创建按钮
        Button bu = new Button("=");//用以计算结果
        //创建文本域
        TextArea Pr = new TextArea(1, 15);//显示结果
        f.add(Tips);
        f.add(tf1);
        f.add(op);
        f.add(tf2);
        f.add(bu);
        f.add(Pr);//添加按钮文本框文本域
        f.addWindowListener(new WindowAdapter() {//侦听窗口关闭就结束程序
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        bu.addActionListener(new ActionListener() {//侦听=按钮，每次点击=按钮计算结果
            @Override
            public void actionPerformed(ActionEvent e) {
                double a = Double.parseDouble(tf1.getText().trim());//获得第一个文本框的数值
                double b = Double.parseDouble(tf2.getText().trim());//获得第二个文本框的数值
                /*
                 * Double.parseDouble(com.String s)
                 * 会将St转换并返回一个双精度的数值，如果St含有其他字符，将会异常
                 * 例如St="aSofNw9o";代码会异常
                 * 例如St="1649.615";代码正确
                 */
                GetResult(a, op.getText().trim(), b);//计算结果
                tf1.requestFocus();//光标移动到第一个文本框
            }

            private void GetResult(double a, String op, double b) {
                switch (op) {
                    case "+":
                        Pr.append(a + b + "\r\n");
                        break;
                    case "-":
                        Pr.append(a - b + "\r\n");
                        break;
                    case "*":
                        Pr.append(a * b + "\r\n");
                        break;
                    case "/":
                        if (b != 0) Pr.append(a / b + "\r\n");
                        else Pr.append("除数为0结果错误\r\n");
                        break;
                }
            }
        });
        f.setVisible(true);//窗口可见
    }
}

